JUnit এবং Mockito এর সাথে Integration

Java Technologies - জ্যাকসন (Jackson) - Jackson এর জন্য Unit Testing
195

Jackson ব্যবহার করে JSON ডেটা Serialize/Deserialize করার জন্য JUnit এবং Mockito দিয়ে টেস্টিং করা একটি সাধারণ পদ্ধতি। এই পদ্ধতিতে, JSON ডেটা হ্যান্ডলিং এবং API এর বেহেভিয়ার নিশ্চিত করতে ObjectMapper এবং মক করা সেবাগুলোর ওপর নির্ভর করে টেস্ট তৈরি করা হয়।


প্রয়োজনীয় Maven ডিপেনডেন্সি

<dependencies>
    <!-- JUnit -->
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter</artifactId>
        <version>5.10.0</version>
        <scope>test</scope>
    </dependency>

    <!-- Mockito -->
    <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-core</artifactId>
        <version>5.4.0</version>
        <scope>test</scope>
    </dependency>

    <!-- Jackson -->
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.15.2</version>
    </dependency>
</dependencies>

Step-by-Step Integration উদাহরণ

১. মডেল ক্লাস তৈরি করা

public class User {
    private String name;
    private int age;
    private String email;

    // Constructors, Getters, and Setters
    public User() {}

    public User(String name, int age, String email) {
        this.name = name;
        this.age = age;
        this.email = email;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

২. JUnit দিয়ে Jackson টেস্ট করা

ObjectMapper ব্যবহার করে Serialization/Deserialization টেস্ট
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.assertEquals;

public class JacksonTest {

    @Test
    public void testSerialization() throws Exception {
        // Arrange
        User user = new User("Alice", 30, "alice@example.com");
        ObjectMapper mapper = new ObjectMapper();

        // Act
        String json = mapper.writeValueAsString(user);

        // Assert
        String expectedJson = "{\"name\":\"Alice\",\"age\":30,\"email\":\"alice@example.com\"}";
        assertEquals(expectedJson, json);
    }

    @Test
    public void testDeserialization() throws Exception {
        // Arrange
        String json = "{\"name\":\"Bob\",\"age\":25,\"email\":\"bob@example.com\"}";
        ObjectMapper mapper = new ObjectMapper();

        // Act
        User user = mapper.readValue(json, User.class);

        // Assert
        assertEquals("Bob", user.getName());
        assertEquals(25, user.getAge());
        assertEquals("bob@example.com", user.getEmail());
    }
}

৩. Mockito ব্যবহার করে Service Layer টেস্ট করা

Service Layer
import org.springframework.stereotype.Service;

@Service
public class UserService {
    public String getUserData(User user) {
        if (user.getAge() < 18) {
            return "User is a minor";
        }
        return "User is an adult";
    }
}
Mockito দিয়ে Service Layer টেস্ট
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.Mockito.when;

public class UserServiceTest {

    @Test
    public void testGetUserData() {
        // Arrange
        UserService userService = Mockito.mock(UserService.class);
        User user = new User("Charlie", 17, "charlie@example.com");

        // Mocking the service method
        when(userService.getUserData(user)).thenReturn("User is a minor");

        // Act
        String result = userService.getUserData(user);

        // Assert
        assertEquals("User is a minor", result);
    }
}

৪. Spring Boot এবং Controller টেস্ট করা

Controller Layer
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/api/users")
public class UserController {

    @PostMapping
    public String createUser(@RequestBody User user) {
        return "User created: " + user.getName();
    }
}
MockMvc ব্যবহার করে Controller টেস্ট
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.test.web.servlet.MockMvc;

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;

@WebMvcTest(UserController.class)
public class UserControllerTest {

    @Autowired
    private MockMvc mockMvc;

    @Autowired
    private ObjectMapper objectMapper;

    @Test
    public void testCreateUser() throws Exception {
        // Arrange
        User user = new User("Alice", 30, "alice@example.com");
        String json = objectMapper.writeValueAsString(user);

        // Act & Assert
        mockMvc.perform(post("/api/users")
                .contentType("application/json")
                .content(json))
                .andExpect(status().isOk())
                .andExpect(content().string("User created: Alice"));
    }
}

৫. Test Coverage নিশ্চিত করা

  • Unit Test: মডেল ক্লাস এবং সার্ভিস লেয়ার টেস্ট করার জন্য JUnit ব্যবহার।
  • Mocking External Services: Mockito দিয়ে ডিপেন্ডেন্সি মক করা।
  • Integration Test: MockMvc দিয়ে Controller এবং API টেস্ট করা।
  • Serialization/Deserialization: Jackson এর ObjectMapper ব্যবহার করে নিশ্চিত করা যে JSON ফরম্যাট সঠিক।

  1. JUnit: JSON Serialization/Deserialization ভেরিফাই করতে ব্যবহার করা হয়।
  2. Mockito: ডিপেন্ডেন্সি মক করে সার্ভিস লেয়ার বা ডেটাবেস ইন্টারঅ্যাকশন টেস্ট করা হয়।
  3. Spring Boot Test Framework: MockMvc দিয়ে REST API টেস্ট করা।
  4. ObjectMapper: Jackson এর মাধ্যমে JSON ডেটার গুণগত মান নিশ্চিত করতে ব্যবহৃত হয়।
Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...